package ar.com.gepp.main;

import java.io.File;
import java.util.List;

import ar.com.gepp.torneo.comparators.EliminatoriaClasificacionDoble;
import ar.com.gepp.torneo.comparators.EliminatoriaClasificacionSimple;
import ar.com.gepp.torneo.entidades.impl.EliminatoriaDoble;
import ar.com.gepp.torneo.entidades.impl.EliminatoriaSimple;
import ar.com.gepp.torneo.entidades.impl.Equipo;
import ar.com.gepp.torneo.entidades.impl.Fecha;
import ar.com.gepp.torneo.entidades.impl.Fixture;
import ar.com.gepp.torneo.entidades.impl.Liga;
import ar.com.gepp.torneo.entidades.impl.Partido;
import ar.com.gepp.torneo.entidades.impl.Posicion;
import ar.com.gepp.torneo.parsers.ParserEquipo;

public class Ejecutable {

	private static void printLiga(List<Posicion> posiciones, Liga l1) {
		System.out.println("<table border='1'>");
		for (Posicion pos : posiciones) {

			System.out.println("<tr>");
			System.out.println("<td>Equipo: " + pos.getEquipo().getNombre() + "</td>");
			System.out.println("<td>Puntos: " + pos.getPuntos() + "</td>");
			System.out.println("<td>Pj: " + pos.getPj() + "</td>");
			System.out.println("<td>Pg: " + pos.getPg() + "</td>");
			System.out.println("<td>Pe: " + pos.getPe() + "</td>");
			System.out.println("<td>Pp: " + pos.getPp() + "</td>");
			System.out.println("<td>Gf: " + pos.getGf() + "</td>");
			System.out.println("<td>Gc: " + pos.getGc() + "</td>");
			System.out.println("</tr>");
		}
		System.out.println("</table>");

		System.out.println("<hr>");

		System.out.println("<table border='1'>");
		for (Fecha fecha : l1.getUltimaEdicion().getFix().getFechas()) {
			System.out.println("<tr>");
			System.out.println("<td>");
			System.out.println("Fecha " + fecha.getIdFecha());
			System.out.println("</td>");
			System.out.println("</tr><tr>");
			for (Partido partido : fecha.getPartidos()) {
				System.out.println("<td>");
				System.out.println(partido.getLocal().getNombre());
				System.out.println("</td>");
				System.out.println("<td>");
				System.out.println(partido.getGolLocal());
				System.out.println("</td>");
				System.out.println("<td>");
				System.out.println(partido.getGolVisitante());
				System.out.println("</td>");
				System.out.println("<td>");
				System.out.println(partido.getVisitante().getNombre());
				System.out.println("</td>");
			}
			System.out.println("</tr>");
		}
		System.out.println("</table>");
	}

	public static void printEliminatoria(EliminatoriaSimple e) {
		for (Fixture fix : e.getRondas()) {
			System.out.println("<table border='1' style='width:100%;'>");
			for (Fecha fecha : fix.getFechas()) {
				System.out.println("<tr>");
				System.out.println("<td>");
				System.out.println("Fecha " + fecha.getIdFecha());
				System.out.println("</td>");
				System.out.println("</tr><tr>");
				for (Partido partido : fecha.getPartidos()) {
					System.out.println("<td>");
					System.out.println(partido.getLocal().getNombre());
					System.out.println("</td>");
					System.out.println("<td>");
					System.out.println(partido.getGolLocal());
					System.out.println("</td>");
					System.out.println("<td>");
					System.out.println(partido.getGolVisitante());
					System.out.println("</td>");
					System.out.println("<td>");
					System.out.println(partido.getVisitante().getNombre());
					System.out.println("</td>");
				}
				System.out.println("</tr>");
			}
			System.out.println("</table>");
		}
	}
	public static void printEliminatoria(EliminatoriaDoble e) {
		for (Fixture fix : e.getRondas()) {
			System.out.println("<table border='1' style='width:100%;'>");
			for (Fecha fecha : fix.getFechas()) {
				System.out.println("<tr>");
				System.out.println("<td>");
				System.out.println("Fecha " + fecha.getIdFecha());
				System.out.println("</td>");
				System.out.println("</tr><tr>");
				for (Partido partido : fecha.getPartidos()) {
					System.out.println("<td>");
					System.out.println(partido.getLocal().getNombre());
					System.out.println("</td>");
					System.out.println("<td>");
					System.out.println(partido.getGolLocal());
					System.out.println("</td>");
					System.out.println("<td>");
					System.out.println(partido.getGolVisitante());
					System.out.println("</td>");
					System.out.println("<td>");
					System.out.println(partido.getVisitante().getNombre());
					System.out.println("</td>");
				}
				System.out.println("</tr>");
			}
			System.out.println("</table>");
		}
	}

	public static void main(String[] args) throws Exception {

		File file = new File("src/resources/equipos/l08.xml");
		List<Equipo> equipos = ParserEquipo.parsertXmlToEquipos(file);

		//for (int i = 0; i < 50; i++) {
			Liga l1 = new Liga();
			l1.nuevaEdicion(equipos);

			while (!l1.edicionFinalizada()) {
				l1.jugarFechaActual();
			}

			List<Posicion> posiciones = l1.getUltimasPosiciones();

			// printLiga(posiciones, l1);
			for (Posicion pos : posiciones) {
				System.out.print(pos.getEquipo().getNombre() + "\t");

			}
			System.out.println("");
		//}
	/*	// Simple
		EliminatoriaClasificacionSimple ecs = new EliminatoriaClasificacionSimple();
		// Doble
		EliminatoriaSimple el = new EliminatoriaSimple();
		el.prepare(equipos, false);
		while (!el.edicionFinalizada()) {
			el.jugarFechaActual();
		}
		printEliminatoria(el);*/

		// Simple
		EliminatoriaClasificacionDoble ecs = new EliminatoriaClasificacionDoble();
		// Doble
		EliminatoriaDoble el = new EliminatoriaDoble();
		el.prepare(equipos, true);
		while (!el.edicionFinalizada()) {
			el.jugarFechaActual();
		}
		printEliminatoria(el);
	}

}
